package com.scs.application.modules.order.service;

import com.scs.application.modules.order.entity.Delivery;
import com.scs.application.modules.order.entity.PurchaseOrder;

/**
 */
public interface IDelivery extends IDeliverySteps{

    /**
     * 执行发货
     */
    default void deliver(Delivery d, PurchaseOrder po) {
        // 发货校验
        validation(d, po);

        // 执行发货
        boolean b = doDeliver();
        if (b) {
            // 完全/全部发货
            fullDeliver();
        } else {
            // 部分发货
            partDeliver();
        }
        //
        updateStatusPurchaseOrder(po);
        //
        updateStatusDelivery(d);
        //
        savePurchaseProcess();
    }

}
